import dayjs from "dayjs"

/**
 * deepTree
 */
export function deepTree(list) {
  // 0. 定义最终的结果集合
  const result = []
  // 1. 先定义个 map 映射
  const map = {}
  // 2. 遍历数组追加到 map 中
  for (let item of list) {
    map[item.id] = { ...item }
  }
  // 3. 遍历数组
  for (let item of list) {
    // 根据 item.parentId 来决定当前 item 是属于谁的子级
    //    item.parentId 如果为 null 则表示为一级，直接追加到 result 中
    if (!item.parentId) {
      result.push(map[item.id])
    } else {
      if (map[item.parentId].children) {
        map[item.parentId].children.push(map[item.id])
      } else {
        map[item.parentId].children = [map[item.id]]
      }
    }
  }
  // 4. 返回result
  return result
}

/**
 * 判断 id 是否为叶子节点
 * @param {Array} list
 * @param {*} id
 * @returns {boolean}
 *    true   则表示为 叶子节点
 *    false  则表示为 非叶子节点
 */
export function isLeaf(list, id) {
  return list.every((item) => item.parentId !== id)
}

/**
 * 日期事件格式化显示的函数
 */
export function dateFormat(date, format = "YYYY-MM-DD") {
  return dayjs(date).format(format)
}
